package no14.classtype;

/**
 *演示类加载过程 可以参考类加载器部分
 * 
 * @author gao
 * 
 */
class Candy {
	static {
		System.out.println("Loading Candy");
	}
}

// 仅在需要时才被加载
class Gum {
	static {
		System.out.println("Loading Gum");
	}
}

class Gum1 {
	static {
		System.out.println("Loading Gum1");
	}
}

public class ClassLoad {
	public static void main(String[] args) {
		System.out.println("main start");
		// 使用.class方式取得class对象时,只做加载和链接,不会做初始化
		//Class<Object> gum = Gum.class;这样是不行的,Gum的Class类不是Object的Class类的子类
		//Class<? extends Object> gum = Gum.class; 又是可以的,使用了泛化
		Class<Gum> gum = Gum.class;
		try {
			new Candy();// 加载类的同时加载static的内容
			// 此时才初始化
			gum.newInstance();
			// 使用包名+类名
			// 三步都做:加载,链接,初始化
			Class.forName("no14.Gum1");
		} catch (Exception e) {

		}
	}
}
